package com.ccit.mpdemo.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ccit.mpdemo.entiy.User;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * 基于类 user使用的 ，所以 泛型<E> 是<user>
 *     可以使用user类的东西
 *     IDEA在 userMapper 处报错，因为找不到注入的对象，因为类是动态创建的，但是程序可以正确的执
 * 行。
 * 为了避免报错，可以在 dao 层 的接口上添加 @Repository 注
 */

/**
 * Repository的作用
 * 这是因为该注解的作用不只是将类识别为Bean，
 * 同时它还能将所标注的类中抛出的数据访问异常封装为 Spring 的数据访问异常类型。
 * Spring本身提供了一个丰富的并且是与具体的数据访问技术无关的数据访问异常结构，
 * 用于封装不同的持久层框架抛出的异常，使得异常独立于底层的框架
 */
@Repository

/**
 * Mapper 继承该接口后，无需编写 mapper.xml 文件，即可获得CRUD功能
 */
public interface UserMapper extends BaseMapper<User> {

    int deleteById(long l);

    int deleteBatchIds(List<Long> asList);

    /**
     * 这个param注解的value也就是下面的ido要和xml文件方法的 #{} 预编译 对应起来
     * @param ido 传入的参数
     * @return
     */
    Integer countRegisterDay(@Param("ido") String ido);


    List<User> getList();
    Map<String,User> getMap(@Param("mapId") String id);
}
